Designing programming languages for analyzability: a fresh look at pointer data structures
نویسندگان
چکیده
1992 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE. Abstract In this paper we propose a programming language mechanism and associated compiler techniques which signiicantly enhance the analyzability of pointer-based data structures frequently used in non-scientiic programs. Our approach is based on exploiting two important properties of pointer data structures: structural inductivity and speculative traversability. Structural inductivity facilitates the application of a static interference analysis method for such pointer data structures based on path matrices, and speculative traversability is utilized by a novel loop unrolling technique for while loops that exploit ne-grain parallelism by speculatively traversing such data structures. The eeectiveness of this approach is demonstrated by applying it to a collection of loops found in typical non-scientiic C programs.
منابع مشابه
Programming Data Structures in Logic
Current programming languages that are grounded in a formal logic — such as pure Lisp (based on the lambda calculus) and Prolog (based on Horn clause logic) — do not support the use of complex, pointer-based data structures. The lack of this important feature in logically grounded languages contrasts sharply with its strong support in the imperative programming languages that have enjoyed wide ...
متن کاملPointer Analysis for Monotonic Container Traversals
As programmers look forward to designing high performance applications with object-oriented models, compilers must support higher-level analyses and optimizations. Pointer analysis for container-centric applications is one of these: it exploits abstract semantics of container structures (e.g., lists, trees, maps) provided by standard libraries and toolkits. Focusing on Java, we capture aliasing...
متن کاملParaSail: A Pointer-Free Path to Object-Oriented Parallel Programming
Pointers are ubiquitous in modern object-oriented programming languages, and many data structures such as trees, lists, graphs, hash tables, etc. depend on them heavily. Unfortunately, pointers can add significant complexity to programming. ParaSail, a new parallel object-oriented programming language, has adopted an alternative, pointer-free approach to defining data structures. Rather than us...
متن کاملData Dependence Analysis In Presence Of Inheritance and Polymorphism*
The data dependence analysis is a hard problem, particularly in the presence of data structures similar to the pointer: The inheritance and the polymorphism in the object-oriented language provide the program designing and the software engineering with new methods. But at the same time, they bring about more barriers in the dependence analysis for object-oriented language. This paper proposes a...
متن کاملReasoning about Pointers in Refinement Calculus
Pointers are an important programming concept. They are used explicitely or implicitly in many programming languages. In particular, the semantics of object-oriented programming languages rely on pointers. We introduce a semantics for pointer structures. Pointers are seen as indexes and pointer fields are functions from these indexes to values. Using this semantics we turn all pointer operation...
متن کامل